package com.itxx.examination2;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

//需求：编写客户端和服务器端程序，客户端用于上传图片，服务器端用于接收文件，文件上传成功后，给客户端一个反馈：文件上传成功。
//
//注意：
//
//服务器端采用多线程实现，并且要解决文件名冲突问题。
//
//客户端控制台内容
public class ExaminationCilent {
    public static void main(String[] args) throws IOException {

        Scanner sc = new Scanner(System.in);

        Socket socket = new Socket("127.0.0.1", 45433);
        String path = getPath(sc);
        System.out.println(path);

        //创缓冲字节
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));
        BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
        int len;
        byte[] bytes = new byte[1024];
        while ((len = bis.read(bytes)) != -1) {
            bos.write(bytes, 0, len);
            bos.flush();
        }
        socket.shutdownOutput();
        //接受服务端反馈
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String s = br.readLine();
        System.out.println("这是服务福安反馈的数据:" + s);


        socket.close();
        bis.close();

    }

    private static String getPath(Scanner sc) {
        while (true) {
            //要传输的文件的地址
            System.out.println("请输入上传的文件的路径");
            //要传输的文件的地址
            String path = sc.nextLine();
            File file = new File(path);
            if (file.isFile()) {
                return path;
            } else {
                System.out.println("请输入正确的图片文件路径名,请重新输入");
                continue;
            }
        }
    }
}
